package kr.pe.johnkim.checkmileage.mobile.rest.service;

import kr.pe.johnkim.checkmileage.mobile.domain.CheckMileageMerchant;

import java.util.List;

/**
 * Check Mileage 가맹점 관련 Service 기능들을 정의하는 인터페이스 이다.
 * 
 * @author : johnkim <cale9797@gmail.com / Bettersoft, Inc.>
 * @Date : 12. 7. 25
 */
public interface CheckMileageMerchantService {

    /**
     * 가맹점 중복 아이디 검사를 한다.
     *
     * @param checkMileageMerchant
     * @return
     */
    public CheckMileageMerchant selectMerchantId(CheckMileageMerchant checkMileageMerchant);

    /**
     * 가맹점을 등록 한다.
     *
     * @param checkMileageMerchant
     */
    public void registerMerchant(CheckMileageMerchant checkMileageMerchant) throws Exception;

    /**
     * 서비스 로그인을 한다.
     *
     * @param checkMileageMerchant
     * @return
     */
    public CheckMileageMerchant login(CheckMileageMerchant checkMileageMerchant);

    /**
     * 가맹점 정보를 가져 온다.
     *
     * @param checkMileageMerchant
     * @return
     */
    public CheckMileageMerchant selectMerchantInformation(CheckMileageMerchant checkMileageMerchant);

    /**
     * 가맹점 정보를 수정 한다.
     *
     * @param checkMileageMerchant
     */
    public void updateMerchantInformation(CheckMileageMerchant checkMileageMerchant) throws Exception;

    /**
     * 가맹점의 서비스 사용을 제한 여부를 업데이트 한다.
     *
     * @param checkMileageMerchant
     */
    public void updateRestrictionMerchant(CheckMileageMerchant checkMileageMerchant) throws Exception;

    /**
     * 가맹점의 활성화 여부를 업데이트 한다.
     *
     * @param checkMileageMerchant
     */
    public void updateDeactivateMerchant(CheckMileageMerchant checkMileageMerchant) throws Exception;

    /**
     * 가맹점 매장 Tablet PC 홍보 문구와 사진을 업데이트 한다.
     *
     * @param checkMileageMerchant
     */
    public void updatePRMerchant(CheckMileageMerchant checkMileageMerchant) throws Exception;

    /**
     * 가맹점의 위치 정보를 업데이트 한다.
     *
     * @param checkMileageMerchant
     */
    public void updateMerchantLocation(CheckMileageMerchant checkMileageMerchant);

    /**
     * 가맹점 검색 결과 목록을 가져 온다.
     *
     * @param checkMileageMerchant
     * @return
     */
    public List<CheckMileageMerchant> selectSearchMerchantList(CheckMileageMerchant checkMileageMerchant);

    /**
     * 모든 가맹점 목록을 가져 온다.(JSon 테스트용도)
     *
     * @param
     * @return
     */
    public List<CheckMileageMerchant> selectMerchantList();
}
